#include "readermanagerwidget.h"
#include "ElaLineEdit.h"
#include "ElaPushButton.h"
#include "ElaTableView.h"
#include "ElaText.h"
#include "ExamplePage/T_TableView.h"

#include <QGroupBox>
#include <QHBoxLayout>
#include <QHeaderView>
#include <QStandardItemModel>


#include "ModelView/T_TableViewModel.h"

#include "R_TableViewModel.h"
#include "comboboxdelegate.h"
#include "deletebuttondelegate.h"

ReaderManagerWidget::ReaderManagerWidget(QWidget *parent)
    : QWidget{parent}
{
    initUI();
    initConnect();

}

void ReaderManagerWidget::initUI()
{
    QVBoxLayout *v_main_layout = new QVBoxLayout(this);

    ElaText *le_qury = new ElaText(tr("ID:"), this);
    le_qury->setTextStyle(ElaTextType::Body);
    m_lEdit_query = new ElaLineEdit(this);
    m_lEdit_query->setPlaceholderText(tr("输入IC卡号或读者ID进行快速检索"));
    m_btn_query = new ElaPushButton(tr("查找"), this);
    m_btn_add = new ElaPushButton(tr("添加"), this);

    QHBoxLayout *hLayout_quryEidt = new QHBoxLayout(this);

    QGroupBox *formGroup = new QGroupBox(this);
    formGroup->setLayout(hLayout_quryEidt);
    hLayout_quryEidt->addWidget(le_qury);
    hLayout_quryEidt->addWidget(m_lEdit_query);
    hLayout_quryEidt->addWidget(m_btn_query);
    hLayout_quryEidt->addWidget(m_btn_add);

    // m_tableWidget = new ElaTabWidget(this);
    // QList<QAction *> actions;
    // m_tableWidget->addActions(actions);

    // m_tableViewPage = new T_TableView(this);

    // // hLayout->addLayout(vLayout_quryEidt);
    v_main_layout->addWidget(formGroup);
    // hLayout->addWidget(m_tableViewPage);
    m_tableView = new ElaTableView(this);
    QFont tableHeaderFont = m_tableView->horizontalHeader()->font();
    tableHeaderFont.setPixelSize(16);
    m_tableView->horizontalHeader()->setFont(tableHeaderFont);  // 设置列头字体大小
    m_tableView->setModel(new R_TableViewModel());
    m_tableView->setSelectionBehavior(QAbstractItemView::SelectRows);   // 选中模式
    m_tableView->setAlternatingRowColors(true); // 行颜色交替
    m_tableView->setIconSize(QSize(38, 38));    // 设置图标大小
    // m_tableView->verticalHeader()->setHidden(true);  // 设置行号显示
    m_tableView->horizontalHeader()->setMinimumSectionSize(60); // 设置列最小宽度
    m_tableView->verticalHeader()->setMinimumSectionSize(46);   // 设置行最小宽度
    m_tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); // 设置自动调整占比

    // // 显示时，单独调整每列的长度
    // connect(m_tableView, &ElaTableView::tableViewShow, this, [=]() {
    //     m_tableView->setColumnWidth(0, 60);
    //     m_tableView->setColumnWidth(1, 205);
    //     m_tableView->setColumnWidth(2, 170);
    //     m_tableView->setColumnWidth(3, 150);
    //     m_tableView->setColumnWidth(4, 60);
    // });
    DeleteButtonDelegate *delegate = new DeleteButtonDelegate(m_tableView);

    QModelIndex parentIndex = m_tableView->model()->index(0, 0); // 获取某个父节点
    int columns = m_tableView->model()->columnCount(parentIndex);
    m_tableView->setItemDelegateForColumn(columns-1, delegate);

    // m_tableView->setItemDelegateForColumn(columns-1, new ComboBoxDelegate({"1", "2"}, m_tableView));// new ComboBoxDelegate({"1", "2"},this)


    // connect(m_tableView->model(), &QStandardItemModel::rowsInserted,
    //         [this](const QModelIndex &, int first, int last) {
    //             for (int row = first; row <= last; ++row) {
    //                 QModelIndex parentIndex = m_tableView->model()->index(0, 0); // 获取某个父节点
    //                 int buttonColumn = m_tableView->model()->columnCount(parentIndex) - 1;
    //                 m_tableView->openPersistentEditor(m_tableView->model()->index(row, buttonColumn));
    //             }
    //         });
    // 为所有现有行开启编辑器
    for (int row = 0; row < m_tableView->model()->rowCount(); ++row) {
        QModelIndex index = m_tableView->model()->index(row, columns-1);
        m_tableView->openPersistentEditor(index); // 关键操作
    }

    v_main_layout->addWidget(m_tableView);
    this->setLayout(v_main_layout);
}

void ReaderManagerWidget::initConnect()
{

}
